home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / Adobe Media Player 1.6 / adobe_media_player.air / AMP.swf / scripts / mx / controls / ToggleButtonBar.as < prev    next >
Encoding:
Text File  |  2008-11-25  |  8.2 KB  |  264 lines

  1. package mx.controls
  2. {
  3.    import flash.events.Event;
  4.    import flash.events.KeyboardEvent;
  5.    import flash.events.MouseEvent;
  6.    import flash.ui.Keyboard;
  7.    import mx.core.IFlexDisplayObject;
  8.    import mx.core.mx_internal;
  9.    import mx.events.FlexEvent;
  10.    
  11.    use namespace mx_internal;
  12.    
  13.    public class ToggleButtonBar extends ButtonBar
  14.    {
  15.       mx_internal static const VERSION:String = "3.2.0.3958";
  16.       
  17.       mx_internal var selectedButtonTextStyleNameProp:String = "selectedButtonTextStyleName";
  18.       
  19.       private var initializeSelectedButton:Boolean = true;
  20.       
  21.       private var _toggleOnClick:Boolean = false;
  22.       
  23.       private var _selectedIndex:int = -2;
  24.       
  25.       private var selectedIndexChanged:Boolean = false;
  26.       
  27.       public function ToggleButtonBar()
  28.       {
  29.          super();
  30.       }
  31.       
  32.       override protected function createNavItem(param1:String, param2:Class = null) : IFlexDisplayObject
  33.       {
  34.          var _loc3_:Button = Button(super.createNavItem(param1,param2));
  35.          _loc3_.toggle = true;
  36.          return _loc3_;
  37.       }
  38.       
  39.       override public function styleChanged(param1:String) : void
  40.       {
  41.          var _loc3_:Button = null;
  42.          var _loc4_:String = null;
  43.          var _loc2_:Boolean = param1 == null || param1 == "styleName";
  44.          super.styleChanged(param1);
  45.          if(_loc2_ || param1 == mx_internal::selectedButtonTextStyleNameProp)
  46.          {
  47.             if(selectedIndex != -1 && selectedIndex < numChildren)
  48.             {
  49.                _loc3_ = Button(getChildAt(selectedIndex));
  50.                if(_loc3_)
  51.                {
  52.                   _loc4_ = getStyle(mx_internal::selectedButtonTextStyleNameProp);
  53.                   _loc3_.mx_internal::getTextField().styleName = !!_loc4_ ? _loc4_ : "activeButtonStyle";
  54.                }
  55.             }
  56.          }
  57.       }
  58.       
  59.       override protected function resetNavItems() : void
  60.       {
  61.          var _loc4_:Button = null;
  62.          var _loc1_:String = getStyle(mx_internal::selectedButtonTextStyleNameProp);
  63.          var _loc2_:int = numChildren;
  64.          var _loc3_:int = 0;
  65.          while(_loc3_ < _loc2_)
  66.          {
  67.             _loc4_ = Button(getChildAt(_loc3_));
  68.             if(_loc3_ == selectedIndex)
  69.             {
  70.                _loc4_.selected = true;
  71.                _loc4_.mx_internal::getTextField().styleName = !!_loc1_ ? _loc1_ : "activeButtonStyle";
  72.             }
  73.             else
  74.             {
  75.                _loc4_.selected = false;
  76.                _loc4_.mx_internal::getTextField().styleName = _loc4_;
  77.             }
  78.             _loc3_++;
  79.          }
  80.          super.resetNavItems();
  81.       }
  82.       
  83.       mx_internal function selectButton(param1:int, param2:Boolean = false, param3:Event = null) : void
  84.       {
  85.          _selectedIndex = param1;
  86.          if(param2)
  87.          {
  88.             mx_internal::drawButtonFocus(mx_internal::focusedIndex,false);
  89.             mx_internal::focusedIndex = param1;
  90.             mx_internal::drawButtonFocus(mx_internal::focusedIndex,false);
  91.          }
  92.          var _loc4_:Button = Button(getChildAt(param1));
  93.          mx_internal::simulatedClickTriggerEvent = param3;
  94.          _loc4_.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
  95.          mx_internal::simulatedClickTriggerEvent = null;
  96.       }
  97.       
  98.       override protected function keyUpHandler(param1:KeyboardEvent) : void
  99.       {
  100.       }
  101.       
  102.       override protected function commitProperties() : void
  103.       {
  104.          super.commitProperties();
  105.          if(selectedIndexChanged)
  106.          {
  107.             hiliteSelectedNavItem(_selectedIndex);
  108.             super.selectedIndex = _selectedIndex;
  109.             selectedIndexChanged = false;
  110.          }
  111.       }
  112.       
  113.       override protected function hiliteSelectedNavItem(param1:int) : void
  114.       {
  115.          var _loc2_:Button = null;
  116.          var _loc3_:String = null;
  117.          if(selectedIndex != -1 && selectedIndex < numChildren)
  118.          {
  119.             _loc2_ = Button(getChildAt(selectedIndex));
  120.             _loc2_.selected = false;
  121.             _loc2_.mx_internal::getTextField().styleName = _loc2_;
  122.             _loc2_.invalidateDisplayList();
  123.             _loc2_.invalidateSize();
  124.          }
  125.          super.selectedIndex = param1;
  126.          if(param1 > -1)
  127.          {
  128.             _loc2_ = Button(getChildAt(selectedIndex));
  129.             _loc2_.selected = true;
  130.             _loc3_ = getStyle(mx_internal::selectedButtonTextStyleNameProp);
  131.             _loc2_.mx_internal::getTextField().styleName = !!_loc3_ ? _loc3_ : "activeButtonStyle";
  132.             _loc2_.invalidateDisplayList();
  133.          }
  134.       }
  135.       
  136.       override protected function clickHandler(param1:MouseEvent) : void
  137.       {
  138.          var _loc2_:int = getChildIndex(Button(param1.currentTarget));
  139.          _selectedIndex = _loc2_;
  140.          if(_toggleOnClick && _loc2_ == selectedIndex)
  141.          {
  142.             selectedIndex = -1;
  143.             hiliteSelectedNavItem(-1);
  144.          }
  145.          else
  146.          {
  147.             hiliteSelectedNavItem(_loc2_);
  148.          }
  149.          super.clickHandler(param1);
  150.       }
  151.       
  152.       override protected function keyDownHandler(param1:KeyboardEvent) : void
  153.       {
  154.          var _loc2_:int = -1;
  155.          var _loc3_:Boolean = true;
  156.          var _loc4_:int = numChildren;
  157.          switch(param1.keyCode)
  158.          {
  159.             case Keyboard.PAGE_DOWN:
  160.                _loc2_ = int(mx_internal::nextIndex(selectedIndex));
  161.                break;
  162.             case Keyboard.PAGE_UP:
  163.                if(selectedIndex != -1)
  164.                {
  165.                   _loc2_ = int(mx_internal::prevIndex(selectedIndex));
  166.                }
  167.                else if(_loc4_ > 0)
  168.                {
  169.                   _loc2_ = 0;
  170.                }
  171.                break;
  172.             case Keyboard.HOME:
  173.                if(_loc4_ > 0)
  174.                {
  175.                   _loc2_ = 0;
  176.                }
  177.                break;
  178.             case Keyboard.END:
  179.                if(_loc4_ > 0)
  180.                {
  181.                   _loc2_ = _loc4_ - 1;
  182.                }
  183.                break;
  184.             case Keyboard.SPACE:
  185.             case Keyboard.ENTER:
  186.                if(mx_internal::focusedIndex != -1)
  187.                {
  188.                   _loc2_ = int(mx_internal::focusedIndex);
  189.                   _loc3_ = false;
  190.                }
  191.                break;
  192.             default:
  193.                super.keyDownHandler(param1);
  194.          }
  195.          if(_loc2_ != -1)
  196.          {
  197.             mx_internal::selectButton(_loc2_,_loc3_,param1);
  198.          }
  199.          param1.stopPropagation();
  200.       }
  201.       
  202.       public function set toggleOnClick(param1:Boolean) : void
  203.       {
  204.          _toggleOnClick = param1;
  205.       }
  206.       
  207.       override public function set selectedIndex(param1:int) : void
  208.       {
  209.          if(param1 == selectedIndex)
  210.          {
  211.             return;
  212.          }
  213.          if(numChildren == 0)
  214.          {
  215.             _selectedIndex = param1;
  216.             selectedIndexChanged = true;
  217.          }
  218.          if(param1 < numChildren)
  219.          {
  220.             _selectedIndex = param1;
  221.             selectedIndexChanged = true;
  222.             invalidateProperties();
  223.             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
  224.          }
  225.       }
  226.       
  227.       public function get toggleOnClick() : Boolean
  228.       {
  229.          return _toggleOnClick;
  230.       }
  231.       
  232.       [Bindable("valueCommit")]
  233.       [Bindable("click")]
  234.       override public function get selectedIndex() : int
  235.       {
  236.          return super.selectedIndex;
  237.       }
  238.       
  239.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  240.       {
  241.          var _loc3_:int = 0;
  242.          super.updateDisplayList(param1,param2);
  243.          if(initializeSelectedButton)
  244.          {
  245.             initializeSelectedButton = false;
  246.             _loc3_ = _selectedIndex;
  247.             if(_loc3_ == -2)
  248.             {
  249.                if(numChildren > 0)
  250.                {
  251.                   _loc3_ = 0;
  252.                }
  253.                else
  254.                {
  255.                   _loc3_ = -1;
  256.                }
  257.             }
  258.             hiliteSelectedNavItem(_loc3_);
  259.          }
  260.       }
  261.    }
  262. }
  263.  
  264.